package com.showsu.editor.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.showsu.editor.entity.po.TblXhsCheckAwemeIncludedRecord;
import com.showsu.editor.entity.vo.request.RequestVO;
import com.showsu.editor.enums.UserExpPackageTypeEnum;

import java.util.Date;
import java.util.List;


/**
 * @Author: jph
 * @Description: xhs笔记收录查询记录表
 * @Date: Created in 15:52 下午 2025/08/14
 * @Modified By:
 */
public interface IXhsCheckAwemeIncludedRecordService extends IService<TblXhsCheckAwemeIncludedRecord> {

    /**
     * 条件查询记录总数
     *
     * @param userId 用户id
     * @param businessType 业务场景 {@link UserExpPackageTypeEnum}
     * @return
     */
    Integer queryCount(Long userId, Integer businessType);

    /**
     * 条件查询记录总数
     *
     * @param userId
     * @param startTime
     * @param endTime
     * @return
     */
    Integer queryCount(Long userId, String startTime, String endTime);

    /**
     * 条件查询记录总数
     *
     * @param userId
     * @param startDate
     * @param endDate
     * @return
     */
    Integer queryCount(Long userId, Date startDate, Date endDate);

    /**
     * 条件查询记录
     *
     * @param userId
     * @return
     */
    List<TblXhsCheckAwemeIncludedRecord> queryList(Long userId);

    /**
     * 条件查询记录
     *
     * @param userId
     * @return
     */
    List<TblXhsCheckAwemeIncludedRecord> queryList(Long userId, Integer limit);

    /**
     * 分页查询记录
     * @param userId 用户id
     * @param businessType 业务场景 {@link UserExpPackageTypeEnum}
     * @param offset 起始数据游标
     * @param limit 结束数据游标
     * @return
     */
    List<TblXhsCheckAwemeIncludedRecord> queryList(Long userId, Integer businessType, Integer offset, Integer limit);

    /**
     * 分页查询记录
     * @param userId 用户id
     * @param businessType 业务场景 {@link UserExpPackageTypeEnum}
     * @param page 页码
     * @param pageSize 每页数据行数
     * @return
     */
    List<TblXhsCheckAwemeIncludedRecord> queryPageList(Long userId, Integer businessType, int page, int pageSize);


    /**
     * 保存记录
     *
     * @param clientRequest
     * @param userId
     * @param result
     * @param cost
     * @return
     */
    Long saveRecord(RequestVO clientRequest, Long userId, TblXhsCheckAwemeIncludedRecord result, Long cost);
}
